package com.rainng.coursesystem.service.admin;

import com.rainng.coursesystem.manager.admin.DepartmentManager;
import com.rainng.coursesystem.model.entity.DepartmentEntity;
import com.rainng.coursesystem.model.vo.response.ResultVO;
import com.rainng.coursesystem.service.BaseService;
import org.springframework.stereotype.Service;

@Service
public class DepartmentService extends BaseService {
    // DepartmentManager对象，用于处理与系相关的数据操作。
    private final DepartmentManager manager;

    // 构造方法，接收一个DepartmentManager对象作为参数。
    public DepartmentService(DepartmentManager manager) {
        this.manager = manager;
    }

    // 获取系的分页数量。
    public ResultVO getPageCount(String name) {
        // 调用DepartmentManager的getPageCount方法，并返回结果。
        return result(manager.getPageCount(name));
    }

    // 获取指定页码的系信息。
    public ResultVO getPage(Integer index, String name) {
        // 调用DepartmentManager的getPage方法，并返回结果。
        return result(manager.getPage(index, name));
    }

    // 根据ID获取系的信息。
    public ResultVO get(Integer id) {
        // 调用DepartmentManager的get方法，根据ID查找系。
        DepartmentEntity entity = manager.get(id);
        // 如果系不存在，返回失败的结果。
        if (entity == null) {
            return failedResult("系Id: " + id + "不存在!");
        }
        // 返回系的信息。
        return result(entity);
    }

    // 更新系的信息。
    public ResultVO update(DepartmentEntity entity) {
        // 检查系是否存在。
        if (manager.get(entity.getId()) == null) {
            return failedResult("系Id: " + entity.getId() + "不存在!");
        }
        // 调用DepartmentManager的update方法更新系信息。
        manager.update(entity);
        // 返回更新成功的结果。
        return result("更新成功");
    }

    // 删除系。
    public ResultVO delete(Integer id) {
        // 检查系是否存在。
        if (manager.get(id) == null) {
            return failedResult("系Id: " + id + "不存在!");
        }
        // 检查系中是否还有专业未被删除。
        if (manager.hasMajor(id)) {
            return failedResult("此系中还有专业未被删除");
        }
        // 检查系中是否还有教师未被删除。
        if (manager.hasTeacher(id)) {
            return failedResult("此系中还有教师未被删除");
        }
        // 调用DepartmentManager的delete方法删除系。
        manager.delete(id);
        // 返回删除成功的结果。
        return result("删除成功");
    }

    // 创建新的系。
    public ResultVO create(DepartmentEntity entity) {
        // 检查系是否已存在。
        if (manager.get(entity.getId()) != null) {
            return failedResult("系Id: " + entity.getId() + "已存在!");
        }
        // 调用DepartmentManager的create方法创建新的系。
        manager.create(entity);
        // 返回创建成功的结果。
        return result("添加成功");
    }

    // 获取所有系的名称列表。
    public ResultVO listName() {
        // 调用DepartmentManager的listName方法，并返回结果。
        return result(manager.listName());
    }


}

